import axios from 'axios'
import { message } from 'antd'
import { HashRouter } from 'react-router-dom'

const router = new HashRouter()

// 请求超时时间
axios.defaults.timeout = 30000

// 全局设置baseUrl
axios.defaults.baseURL = '/api'

// 每次请求都为http头增加Authorization字段，其内容为Token
axios.interceptors.request.use(
    config => {
        // 如果token存在并且不是登录或忘记密码页面就设置请求头
        if (localStorage.token && !/login|forget/i.test(window.location.pathname)) {
            config.headers.Authorization = localStorage.token
        }

        return config
    }
)

// http响应拦截器
axios.interceptors.response.use(
    res => res.data,
    err => {
        try {
            // 如果返回401表示当前用户未登录否则登录超时
            if (err.response.status === 401) {
                localStorage.clear()
                message.info('请重新登录！')
                router.history.push('/Login')
                
                return false
            }
        } catch(err) {
            message.error('请求超时！')
        }
    }
)

export default axios